package algorithm.arithmetic.最长回文字;

/**
 * @author xinchen by 2016/11/28
 * @version 1.0
 */
public class Solution {

    // 给定一个字符串，在其中找到最长的回文字
    public static void main(String[] args) {
        String string = args[0];
        int min = 0;
        int max = 0;

        int tmpMin;
        int tmpMax;
        for (int i = 0; i < string.length(); i++) {
            tmpMin = i;
            tmpMax = i;
            // 向前找相同的
            for (int j = i; j >= 0; j--) {
                if (string.charAt(j) == string.charAt(i)) {
                    tmpMin = j;
                } else {
                    break;
                }
            }
            // 向后找相同的
            for (int j = i; j < string.length(); j++) {
                if (string.charAt(j) == string.charAt(i)) {
                    tmpMax = j;
                } else {
                    break;
                }
            }
            for (; ; ) {
                if (tmpMin > 0 && tmpMax < string.length() - 1) {
                    if (string.charAt(tmpMin - 1) == string.charAt(tmpMax + 1)) {
                        tmpMin--;
                        tmpMax++;
                    } else {
                        break;
                    }
                } else {
                    break;
                }
            }
            // 取大的值
            if ((tmpMax - tmpMin) > (max - min)) {
                max = tmpMax;
                min = tmpMin;
            }
        }
        System.out.println(string.substring(min, max + 1));
    }
}
